package com.server.questionbank.snframe.domain.Ollama;

public enum ChatType {
    LongTerm("LongTerm"),    // 无限期
    Temporary("Temporary", 180);      // 默认 3 分钟

    private final String type;
    private long expirationTime; // 过期时间（单位：分钟）

    // 构造函数用于 Disposable 和 LongTerm
    ChatType(String type, long expirationTime) {
        this.type = type;
        this.expirationTime = expirationTime;
    }

    // 构造函数用于 Temporary
    ChatType(String type) {
        this.type = type;
        this.expirationTime = -1; // 默认值，需要调用 withValue 设置
    }

    public String getType() {
        return type;
    }

    public long getExpirationTime() {
        return expirationTime;
    }

    // 用于设置 Temporary 的值
    public ChatType withValue(long value) {
        if (this != Temporary) {
            throw new UnsupportedOperationException("只有 Temporary 类型可以设置值");
        }
        if (value <= 0) {
            throw new IllegalArgumentException("Temporary 类型的过期时间必须大于 0");
        }
        this.expirationTime = value;
        return this;
    }
}
